import java.util.ArrayList;

/**
 * 
 * @author Lea Muracciole & Thomas Kedziora
 * Cette classe permettant de realiser les sommets du graphe
 */
public class Sommet {

	/* VARIABLES */
	
	/**
	 * entier qui indique le nom du sommet
	 */
	int nom;
	/**
	 * double qui represente le poids de chaque sommet
	 */
	double poids;
	/**
	 * ArrayList qui represente les voisins du sommet courant
	 */
	ArrayList<Sommet> successeurs;
	ArrayList<Sommet> predecesseurs;
	
	
	public ArrayList<Sommet> getPredecesseurs() {
		return predecesseurs;
	}

	public void setPredecesseurs(ArrayList<Sommet> predecesseurs) {
		this.predecesseurs = predecesseurs;
	}

	/**
	 * Constructeur de la classe Sommet, qui initialise le sommet courant
	 * @param nom nom du sommet courant
	 */
	public Sommet(int nom) {
		this.nom = nom;
		this.successeurs = new ArrayList<Sommet>();
		this.predecesseurs = new ArrayList<Sommet>();
	}
	
	/**
	 * Getter sur l'attribut nom
	 * @return le nom du sommet
	 */
	public int getNom() {
		return nom;
	}

	/**
	 * Setter sur l'attribut nom
	 * @param nom modifie le nom du sommet
	 */
	public void setNom(int nom) {
		this.nom = nom;
	}

	/**
	 * Getter sur le poids 
	 * @return le poids du sommet courant
	 */
	public double getPoids() {
		return poids;
	}

	/**
	 * Setter sur le poids
	 * @param poids modifie le poids du sommet courant
	 */
	public void setPoids(double poids) {
		this.poids = poids;
	}

	
	public ArrayList<Sommet> getVoisins() {
		return successeurs;
	}


	public void setVoisins(ArrayList<Sommet> voisins) {
		this.successeurs = voisins;
	}

	/**
	 * 
	 * @param s de type Sommet
	 * @return Vrai si les deux sommets sont identiques, faux sinon
	 */
	public boolean equals(Sommet s) {
		return this.nom==s.nom;
	}
	
	/**
	 * fonction toString 
	 * @return retourne en String le nom du sommet courant
	 */
	public String toString() {
		return String.valueOf(nom);
	}
	
	
	/**
	 * 
	 */
	public void addSuccesseur(Sommet s) {
		if (!successeurs.contains(s)) 
			successeurs.add(s) ;
	}
	
	public void addPredecesseur(Sommet s) {
		if (!predecesseurs.contains(s)) 
			predecesseurs.add(s) ;
	}
}
